Page({
  data: {
    point: '',
    building: '',
    room: '',
    name: '',
    gender: 1,
    mobile: '',
    idcardFrontUrl: '',
    idcardBackUrl: '',
  },
  onLoad({
    point,
    building,
    room,
    id // 编辑需要的id
  }) {
    // 房屋表单页面 要区分 当前是编辑 还是 新增
    // 业务上怎么判断 编辑还是新增 ------>  代码层面怎么判断 编辑 还是新增
    // 后端，产品经理，UI，测试 ---- 项目自我介绍的时候， 加上公司的一些内容进去
    if (id) {
      // 这个是编辑的if语句
      console.log(id);
      wx.setNavigationBarTitle({
        title: '编辑房屋信息',
      })
      this.getHouseDetail(id)
    } else {
      // 这是新增的
      wx.setNavigationBarTitle({
        title: '新增房屋信息',
      })
      this.setData({
        point,
        building,
        room
      })
    }
  },
  async getHouseDetail(id) {
    const res = await wx.$http.get(`/room/${id}`)
    if (res.code !== 10000) return wx.$utils.toast('获取房屋详情失败')
    this.setData({
      ...res.data
    })
  },
  chooseImage(e) {
    console.log(e); // 注释其他 查看打印
    // 不要使用 chooseImage

    const type = e.mark.type
    wx.chooseMedia({
      count: 1,
      mediaType: 'image',
      sourceType: ['album', 'camera'],
      camera: 'back',
      success: (res) => {
        wx.uploadFile({
          url: wx.$http.baseURL + '/upload',
          filePath: res.tempFiles[0].tempFilePath,
          name: 'file',
          header: {
            Authorization: getApp().token
          },
          success: (res) => {
            console.log(res);
            const tmp = JSON.parse(res.data)
            this.setData({
              [type]: tmp.data.url
            })
          }
        })
      }
    })
  },
  // 提交表单
  async goList() {
    // 下面是基础校验 +  业务校验（人资里面）
    // 1.先要校验所有字段，2.发请求  3. 请求成功以后 跳转页面
    // 校验的函数 要封装到这个函数的外面，然后再这里调用就可以了
    // 工作里面，这种校验规则，一定要先程序员自己测试一遍，多测试几种情况
    // const res = await wx.$http.post('/room', {
    //   data: this.data
    // })
    if (!this.verifyName() || !this.verifyMobile() || !this.verifyIdCard()) {
      return
    }

    console.log('都校验成功过');
    // wx.reLaunch({
    //   url: '/house_pkg/pages/list/index',
    // })
    delete this.data.__webviewId__
    delete this.data.status // 因为前端的数据要和后端返回的数据一致,但是我们之前有多添加了一个status-123所以对不上后端数据 得把添加的status做删除处理 
    const res = await wx.$http.post('/room', this.data)
    if (res.code !== 10000) return wx.$utils.toast('添加房屋失败')

    // wx.reLaunch({
    //   url: '/house_pkg/pages/list/index',
    // })
    wx.navigateBack({
      // delta: 4 // 如果是做编辑 后退4下 过多 会回到首页 所以得做判断 如果有id 就是编辑 只回退2下 添加就回退4下
      delta: !!this.data.id ? 2 : 4
    })
  },
  // 校验业主姓名
  verifyName() {
    // 正则校验的步骤  1. 写正则  2. 使用正则的test方法校验 3. toast错误信息 4.返回true或者false
    // 只能是汉字，并且是2-5位
    // 验证是否为2到5个汉字
    const reg = /^[\u4e00-\u9fa5]{2,5}$/
    // 正则验证
    const valide = reg.test(this.data.name.trim())
    // 验证未通过
    if (!valide) wx.$utils.toast('业主姓名校验失败,只能输入2-5位中文') // 提示用户 怕用户不理解
    // 返回验证结果
    return valide
  },

  // 校验业主手机号
  verifyMobile() {
    // 正则校验的步骤  1. 写正则  2. 使用正则的test方法校验 3. toast错误信息 4.返回true或者false
    // 只能是汉字，并且是2-5位
    // 手机号验证规则
    const reg = /^1[3|5|6|7|8|9]\d{9}$/
    // 正则验证
    const valide = reg.test(this.data.mobile.trim())
    // 验证未通过
    if (!valide) wx.$utils.toast('业主手机号校验失败')
    // 返回验证结果
    return valide
  },
  verifyIdCard() {
    // js里面默认的假值  0  '' false null undefined
    const valide = !!this.data.idcardFrontUrl && !!this.data.idcardBackUrl
    if (!valide) wx.$utils.toast('照片必填')
    return valide
  },
  removePicture(ev) {
    // 移除图片的类型（身份证正面或反面）
    const type = ev.mark?.type
    this.setData({
      [type]: ''
    })
  },
})